const {
    createOrUpdate,
    findCarts,
    updateCarts,
    removeCarts,
    selectAllCarts,
    unselectAllCarts
} = require('../service/cart.service')
const {cartFormatError} = require('../constants/err.type')

class CartController {
    // 将商品添加到购物车
    async add(ctx){
        // 获取操作数据库需要用到的user_id和goods_id
        const user_id = ctx.state.user.id
        const goods_id = ctx.request.body.goods_id

        // 操作数据库
        const res = await createOrUpdate(user_id,goods_id)

        // 返回结果
        ctx.body = {
            code: 0,
            message: '添加到购物车成功',
            result: res,
        }
    }

    async findAll(ctx){
        // 解析请求参数
        const { pageNum=1, pageSize=10 } = ctx.request.query
        // 操作数据库
        const res = await findCarts(pageNum,pageSize)
        // 返回结果
        ctx.body = {
            code: 0,
            message: '获取购物车列表成功',
            result: res,
        }
    }

    async update(ctx){
        // 解析参数
        const {id} = ctx.request.params
        const {number, selected} = ctx.request.body
        console.log(id, number, selected)

        if(number == undefined && selected == undefined){
            cartFormatError.message = 'number和select不能同时为空'
            return ctx.app.emit('error',cartFormatError,ctx)
        }

        // 操作数据库
        const res = await updateCarts({id, number, selected})
        
        // 返回数据
        ctx.body = {
            code: 0,
            message: '更新购物车成功',
            result: res
        }
    }

    async remove(ctx){
        const {ids} = ctx.request.body
        
        const res = await removeCarts(ids)

        ctx.body = {
            code: 0,
            message: '删除购物车成功',
            result: res,
        }
    }

    async selectAll(ctx){
        const user_id = ctx.state.user.id

        const res = await selectAllCarts(user_id)

        ctx.body = {
            code: 0,
            message: '全选中成功',
            result: res,
        }
    }

    async unselectAll(ctx){
        const user_id = ctx.state.user.id

        const res = await unselectAllCarts(user_id)
        
        ctx.body = {
            code: 0,
            message: '全不选中成功',
            result: res,
        }
    }
}

module.exports = new CartController()